import { setToken } from '../../utils/setToken'

Page({
  data: {
    // 倒计时变量
    countDown: 0,
    // 手机号
    mobile: '',
    // 验证码
    code: '',
    // 重定向地址
    from: '',
    // 重定向方式
    type: ''
  },

  onLoad(options) {
    console.log(options)
    this.setData({
      from: options.from,
      type: options.type
    })
  },

  // 登录事件处理函数
  handleLoginTap() {
    // 手机号表单验证
    if (!this.isMobileValid()) {
      return wx.showToast({
        title: '手机号码格式错误',
        icon: 'none'
      })
    }
    // 验证码
    if (!this.isCodeValid()) {
      return wx.showToast({
        title: '验证码格式错误',
        icon: 'none'
      })
    }

    console.log('发请求')
    this.login()
  },

  login() {
    wx.request({
      url: 'https://live-api.itheima.net/login',
      method: 'POST',
      data: {
        mobile: this.data.mobile,
        code: this.data.code
      },
      success: (res) => {
        console.log('登录res', res)
        // 业务异常判断
        if (res.data.code !== 10000) {
          return wx.showToast({
            title: res.data.message,
          })
        }
        // 保存token到本地
        setToken('token', res.data.data.token)
        // 登录成功之后重定向页面
        if (this.data.from) {

          // 判断是回到tabBar页面还是普通页面
          if (this.data.type === 'swtichTab') {
            wx.switchTab({
              url: this.data.from,
            })
          } else {
            wx.redirectTo({
              url: this.data.from,
            })
          }
        }
      }
    })
  },

  // 获取验证码事件处理函数
  handleGetCodeTap() {
    // 手机号表单验证
    if (!this.isMobileValid()) {
      return wx.showToast({
        title: '手机号码格式错误',
        icon: 'none'
      })
    }
    // 获取验证码
    this.getCode()
    // 开启倒计时
    this.startCountDown()
  },

  getCode() {
    console.log('获取验证码')
    wx.request({
      url: 'https://live-api.itheima.net/code',
      method: 'GET',
      data: {
        mobile: this.data.mobile
      },
      success: (res) => {
        console.log('验证码res', res)
        if (res.data.code !== 10000) {
          return wx.showToast({
            title: res.data.message,
          })
        }
        console.log('code', res.data.data.code)
        wx.showToast({
          title: res.data.data.code,
        })
      }
    })
  },

  isMobileValid() {
    // 验证手机号
    const reg = /^[1][3-8][0-9]{9}$/
    const valid = reg.test(this.data.mobile.trim())
    return valid
    // return reg.test(this.data.mobile.trim())
  },

  isCodeValid() {
    // 验证验证码
    const reg = /^\d{6}$/
    const valid = reg.test(this.data.code.trim())
    return valid
  },

  startCountDown() {
    // 设置倒计时初始时间
    this.setData({
      countDown: 5
    })

    // 倒计时
    clearInterval(this.timerId)
    this.timerId = setInterval(() => {
      // 判断倒计时是否结束
      if (this.data.countDown === 0) {
        clearInterval(this.timerId)
        return
      }
      this.setData({
        countDown: this.data.countDown - 1
      })
    }, 1000)
  }

});
